import { initDatabase } from './db.js';
import { User } from '../models/User.js';
import { TOTPService } from '../services/totpService.js';
import { log } from '../utils/logger.js';
import dotenv from 'dotenv';

// 加载环境变量
dotenv.config();

// 初始化数据库并创建管理员
async function initWithAdmin() {
  try {
    log.system('开始初始化数据库...');
    initDatabase();
    log.system('数据库初始化成功！');
    
    // 创建管理员账号
    const username = 'samygood';
    const password = 'samyxue8341';
    
    const userId = await User.create(username, password);
    log.system('管理员账号创建成功', { userId, username });
    
    // 生成TOTP密钥和二维码
    const { secret, qrcode } = await TOTPService.generateSecret(username);
    
    // 启用TOTP
    User.enableTOTP(userId, secret);
    
    console.log('');
    console.log('═══════════════════════════════════════════════');
    console.log('✅ 数据库初始化完成！');
    console.log('═══════════════════════════════════════════════');
    console.log('');
    console.log('📝 管理员账号:');
    console.log('   用户名: samygood');
    console.log('   密码: samyxue8341');
    console.log('');
    console.log('🔐 谷歌验证器已启用！');
    console.log('');
    console.log('📱 请使用Google Authenticator扫描以下二维码:');
    console.log('');
    console.log('二维码地址（在浏览器中打开）:');
    console.log(qrcode);
    console.log('');
    console.log('或手动输入密钥:');
    console.log(`密钥: ${secret}`);
    console.log('');
    console.log('💡 使用说明:');
    console.log('   1. 在手机上安装 Google Authenticator 应用');
    console.log('   2. 扫描上方二维码或手动输入密钥');
    console.log('   3. 登录时输入6位动态验证码');
    console.log('');
    console.log('⚠️  重要提示:');
    console.log('   - 请妥善保管密钥');
    console.log('   - 如果丢失密钥，将无法登录');
    console.log('   - 建议截图保存二维码');
    console.log('');
    console.log('═══════════════════════════════════════════════');
    console.log('');
    
    // 将二维码保存到文件
    const fs = await import('fs');
    const path = await import('path');
    const { fileURLToPath } = await import('url');
    
    const __filename = fileURLToPath(import.meta.url);
    const __dirname = path.dirname(__filename);
    
    const qrcodeFile = path.join(__dirname, '../../data/qrcode.txt');
    fs.writeFileSync(qrcodeFile, qrcode);
    
    console.log(`📁 二维码已保存到: ${qrcodeFile}`);
    console.log('   可以在浏览器中打开该文件查看二维码');
    console.log('');
    
    process.exit(0);
  } catch (error) {
    log.error('初始化失败', { error: error.message, stack: error.stack });
    console.error('❌ 初始化失败:', error.message);
    process.exit(1);
  }
}

initWithAdmin();

